package cn.corffen.test.algorithm.leetcode.easy;

import java.util.Locale;

/**
 * 给定一个仅包含大小写字母和空格 ' ' 的字符串 s，返回其最后一个单词的长度。
 * <p>
 * 如果字符串从左向右滚动显示，那么最后一个单词就是最后出现的单词。
 * <p>
 * 如果不存在最后一个单词，请返回 0 。
 * <p>
 * 说明：一个单词是指仅由字母组成、不包含任何空格的 最大子字符串。
 * <p>
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/length-of-last-word
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */
public class Question58 {

    public static void main(String[] args) {

        String s = "hello world   ";
        Question58 solution = new Question58();
        int lastLength = solution.getLastWordLength(s);
        int length = solution.getLength(s);
//        System.out.println(String.format(Locale.CHINA, s + " last word length = %d", lastLength));
        System.out.println(String.format(Locale.CHINA, s + " last word length = %d", length));
    }

    public int getLastWordLength(String s) {
        String trimS = s.trim();
        int i = trimS.lastIndexOf(" ");
        int length = 0;
        if (i > 0) {
            length = trimS.length() - i - 1;
        }
        return length;
    }

    public int getLength(String s) {
        int end = s.length() - 1;
        while (end >= 0) {
            if (s.charAt(end) == ' ') {
                end--;
            } else {
                break;
            }
        }
        if (end < 0) {
            return 0;
        }
        int start = 0;
        for (int i = end; i >= 0; i--) {
            if (s.charAt(i) == ' ') {
                start = i;
                break;
            }
        }
        return end - start;
    }
}
